// 引入路由
import { createRouter, createWebHistory,createWebHashHistory} from 'vue-router'
// 引入仓库的数据
import {useAppStore} from '../stores/user.js'
// 引入进度条包和样式
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import loginRouter from './login.js'

// 引入自动导入 的方法
const modules = import.meta.glob('./modules/*.js',{eager:true})//第二个参数为开启同步
// console.log('我是模组',modules);//导入的路由模组,是一个大对象
// console.log(Object.keys(modules));//各个路径下的文件组成的数组
const moduleArr=[]
Object.keys(modules).forEach(item=>{
  // console.log('我是item',item);//导入的路由模组的键名

  // 异步执行的结果
  // console.log(modules[item]());//导入的路由模组的键值,是函数,直接()调用
  // 因为键值 是一个异步的,所以直接.then()
  // modules[item]().then(res=>{
    //   console.log(...res.default);
    // })

    // 开启同步后
    // console.log(modules[item].default);//结构后是一个由路径组成的数组
  moduleArr.push(...modules[item].default)
})

export const moduleList = moduleArr

const router = createRouter({
  history: createWebHashHistory(import.meta.env.BASE_URL),
  routes: [
    // ...dashboardRouter,
    // ...systemRouter,
    ...moduleArr,
    ...loginRouter
  ]
})

// 路由白名单 
const whiteList =['login']
// 全局路由守卫
router.beforeEach((to,from)=>{
  // 仓库实例化
  const useStore = useAppStore()
  // console.log(useStore);
  // 启动进度条
  NProgress.start()
  // 如果去的路由在白名单不存在
  if(!whiteList.includes(to.name)){
    // 如果token不存在
    if(!useStore.token){
      // 返回登录页面
      return '/login'
    }
  }
})

router.afterEach(()=>{
  NProgress.done();
})

export default router
